package cn.tedu.thread;
/**多线程实现方式一*/
/**线程的随机性:多个线程对象执行的效果是不可控的,因为CPU会调度处理
 * 结果具有随机性,至于哪个时间片让哪个线程执行,时间片有多长,我们都控制不了*/
public class TestThread {
    public static void main(String[] args) {
        //4.创建线程对象进行测试
        MyThread t=new MyThread();/**3.对应的线程状态是新建状态*/
        MyThread t2=new MyThread();//5.模拟多线程,在创建线程对象
        MyThread t3=new MyThread();
        MyThread t4=new MyThread();
        MyThread t5=new MyThread("张大彪");
//        t.run();
//        t2.run();/**5.就是普通方法的调用,不会出现多线程的效果*/
        t.start();/**4.start方法才会把线程加入就绪队列,以多线程方式运行*/
        t2.start();
        t3.start();
        t4.start();
        t5.start();
    }
}
//1.自定义多线程类
/**1.方式1:extends Thread*/
class MyThread extends Thread{
    public MyThread() {
    }

    public MyThread(String name) {
        //子类构造方法触发父类的构造方法给线程对象起名字
        super(name);
    }

    //2.1线程中业务必须写在run()里,不执行父类run(),有自己的业务
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            /**2.getName()可以获取当前正在执行的线程名称
             * 由于是从父类继承过来的方法,所以可以通过方法名直接调用*/
            System.out.println(i+"="+getName());
        }
    }
}
class Base {
    void test() {
        System.out.print("Base.test()");
    }
}
